package com.biz.ssm.base;


import java.io.Serializable;
import java.util.List;

public interface BaseService<T,ID extends Serializable> {

	/**
	 * 根据ID查询记录
	 *
	 * @param id
	 * @return
	 */
	public T selectById(ID id);

	/**
	 * 根据ID删除记录
	 *
	 * @param id
	 * @return
	 */
	public int deleteById(ID id);

	/**
	 * 插入记录
	 *
	 * @param record
	 * @return
	 */
	public Long insert(T record);

	/**
	 * 更新记录
	 *
	 * @param record
	 * @return
	 */
	public int update(T record);

	/**
	 * 基础条件查询
	 *
	 * @param pageable
	 * @return
	 */
	public Page<T> findPage(Pageable pageable);

	/**
	 * 条件计数
	 *
	 * @param pageable
	 * @return
	 */
	public Integer countPage(Pageable pageable);

	/**
	 * 批量删除
	 *
	 * @param ids
	 */
	void removeBeans(ID[] ids);

	/**
	 * 查询所有
	 *
	 * @return
	 */
	public List<T> findAll();

	/**
	 * 查询记录总数
	 *
	 * @return
	 */
	Integer count();

	/**
	 * 根据userId查询记录
	 *
	 * @param userId
	 * @return
	 */
	public T selectByUserId(ID userId);

	/**
	 * 批量插入
	 * @param list
	 * @return
	 */
	int insertList(List<T> list);
}
